import pytest
import os
from selenium import webdriver
from selenium.webdriver.edge.service import Service as EdgeService
from selenium.webdriver.common.by import By
from time import sleep
from util.common import logger
from dotenv import load_dotenv  # 加载.env文件

# 加载环境变量
load_dotenv()

@pytest.fixture(scope="session", autouse=True)
def init_env():
    """会话级夹具：初始化环境（如加载配置）"""
    logger.info("开始初始化测试环境")
    yield
    logger.info("测试环境销毁完成")

@pytest.fixture(scope="function")
def base_driver():
    """基础driver夹具：未登录，供单个用例使用"""
    # 初始化Edge驱动（避免硬编码路径，需配置EdgeDriver环境变量）
    driver = webdriver.Edge(service=EdgeService())
    driver.maximize_window()
    driver.implicitly_wait(10)  # 隐式等待
    driver.get(os.getenv("base_url"))  # 从.env读取地址
    logger.info("初始化基础driver（未登录）")
    yield driver
    # 后置处理：关闭浏览器
    driver.quit()
    logger.info("基础driver已关闭")

@pytest.fixture(scope="function")
def login_driver(base_driver):
    """登录后的driver夹具：供业务用例共享（考核要求）"""
    driver = base_driver
    # 执行登录操作（假设无需输入账号密码，直接点击登录按钮）
    login_btn = driver.find_element(By.CSS_SELECTOR, "#app > div > form > button")
    login_btn.click()
    sleep(3)  # 等待登录完成
    logger.info("driver已完成登录，可供业务用例使用")
    yield driver
    # 后置处理：由base_driver的yield完成关闭